package annotation

import kotlin.reflect.KMutableProperty
import kotlin.reflect.full.memberProperties

object Inject {
    fun inject(obj: Any) {
        println(obj::class.annotations)
        obj::class.annotations.forEach {
//            val setValue = it is SetValue as SetValue

            println((it as SetValue).value)

//            setValue.let { value ->
//                when (it) {
//                    is KMutableProperty<*> -> {
//                        it.setter.call(obj, value)
//                    }
//                    else -> {
//                        it.call(obj)
//                    }
//                }
        }
    }
//        obj::class.memberProperties.filter {
//            //过滤有注解的成员属性
//
//            println(it.annotations.size)
//            it.annotations.isNotEmpty()
//        }.forEach {
//            val setValue = it.annotations.find { ann -> ann is SetValue } as SetValue
//
//
//            setValue.let { setValue ->
//                when (it) {
//                    is KMutableProperty<*> -> {
//                        it.setter.call(obj, setValue)
//                    }
//                    else -> {
//                        it.call(obj)
//                    }
//                }
//            }
//        }
//}
}